const {CommandBase, ManagementModuleFibMgmt} = require("./CommandBase");
const aggregation = require('../common/aggregation')
const {ManagementModuleIdentityMgmt} = require("./CommandBase");
const IdentityManagementActionAdd        = "add"
const IdentityManagementActionDel        = "del"
const IdentityManagementActionList       = "list"
const IdentityManagementActionDumpCert   = "dumpCert"
const IdentityManagementActionImportCert = "importCert"
const IdentityManagementActionSetDef     = "setDef"
const IdentityManagementActionDumpId     = "dumpId"
const IdentityManagementActionLoadId     = "loadId"
const IdentityManagementActionGetId      = "getId"
const IdentityManagementActionSelfIssue  = "selfIssue"

//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// add
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityAddCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityAddCommand 创建一个 IdentityAddCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityAddCommand(topPrefix, parameters){
    let command = new IdentityAddCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionAdd)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// del
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityDelCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityDelCommand 创建一个 IdentityDelCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityDelCommand(topPrefix, parameters){
    let command = new IdentityDelCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionDel)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// list
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityListCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityListCommand 创建一个 IdentityListCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityListCommand(topPrefix, parameters){
    let command = new IdentityListCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionList)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// dumpCert
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityDumpCertCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityDumpCertCommand 创建一个 IdentityDumpCertCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityDumpCertCommand(topPrefix, parameters){
    let command = new IdentityDumpCertCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionDumpCert)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// importCert
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityImportCertCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityImportCertCommand 创建一个 IdentityImportCertCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityImportCertCommand(topPrefix, parameters){
    let command = new IdentityImportCertCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionImportCert)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// setDef
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentitySetDefCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentitySetDefCommand 创建一个 IdentitySetDefCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentitySetDefCommand(topPrefix, parameters){
    let command = new IdentitySetDefCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionSetDef)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// dumpId
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityDumpIdCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityDumpIdCommand 创建一个 IdentityDumpIdCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityDumpIdCommand(topPrefix, parameters){
    let command = new IdentityDumpIdCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionDumpId)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// loadId
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityLoadIdCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityLoadIdCommand 创建一个 IdentityLoadIdCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityLoadIdCommand(topPrefix, parameters){
    let command = new IdentityLoadIdCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionLoadId)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// getId
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentityGetIdCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentityGetIdCommand 创建一个 IdentityGetIdCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentityGetIdCommand(topPrefix, parameters){
    let command = new IdentityGetIdCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionGetId)
    command.setParameters(parameters)
    return command
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///// self issue
//////////////////////////////////////////////////////////////////////////////////////////////////////////
class IdentitySelfIssueCommand extends aggregation(CommandBase){
    constructor() {
        super();
    }
}

// CreateIdentitySelfIssueCommand 创建一个 IdentitySelfIssueCommand 命令
//
// @Description:
// @param topPrefix
// @param parameters
// @return *IdentityAddCommand
//
function createIdentitySelfIssueCommand(topPrefix, parameters){
    let command = new IdentitySelfIssueCommand()
    command.setTopPrefix(topPrefix)
    command.setModuleName(ManagementModuleIdentityMgmt)
    command.setAction(IdentityManagementActionSelfIssue)
    command.setParameters(parameters)
    return command
}

module.exports = {
    createIdentitySelfIssueCommand: createIdentitySelfIssueCommand,
    IdentitySelfIssueCommand: IdentitySelfIssueCommand,
    createIdentityAddCommand: createIdentityAddCommand,
    IdentityAddCommand: IdentityAddCommand,
    createIdentityDelCommand: createIdentityDelCommand,
    IdentityDelCommand: IdentityDelCommand,
    createIdentityDumpCertCommand: createIdentityDumpCertCommand,
    IdentityDumpCertCommand: IdentityDumpCertCommand,
    createIdentityDumpIdCommand: createIdentityDumpIdCommand,
    IdentityDumpIdCommand: IdentityDumpIdCommand,
    createIdentityGetIdCommand: createIdentityGetIdCommand,
    IdentityGetIdCommand: IdentityGetIdCommand,
    createIdentityImportCertCommand: createIdentityImportCertCommand,
    IdentityImportCertCommand: IdentityImportCertCommand,
    createIdentityLoadIdCommand: createIdentityLoadIdCommand,
    IdentityLoadIdCommand: IdentityLoadIdCommand,
    createIdentitySetDefCommand: createIdentitySetDefCommand,
    IdentitySetDefCommand: IdentitySetDefCommand,
    createIdentityListCommand: createIdentityListCommand,
    IdentityListCommand: IdentityListCommand
}